API Documentation
Public Member Functions | List of all members
nkScripts::Environment Class Referencefinal

Defines an environment in which scripts can execute. More...

Public Member Functions

 Environment ()
 
 ~Environment ()
 
const ExecutionResultgetLastExecutionResult () const
 
nkMemory::StringView getName () const
 
void setEnvironmentFor (INTERPRETER interpretType)
 
void setName (const nkMemory::StringView &name)
 
bool execute (const Script &script)
 
void requestGarbageCollection ()
 
void setVar (const nkMemory::StringView &name, bool value)
 
void setVar (const nkMemory::StringView &name, int value)
 
void setVar (const nkMemory::StringView &name, float value)
 
void setVar (const nkMemory::StringView &name, double value)
 
void setVar (const nkMemory::StringView &name, const char *value)
 
void setVar (const nkMemory::StringView &name, const nkMemory::StringView &value)
 
void setVar (const nkMemory::StringView &name, const ScriptObjectReference &value)
 
void setObject (const nkMemory::StringView &name, const nkMemory::StringView &userTypeName, void *value)
 
bool isVarSet (const nkMemory::StringView &name)
 
bool getVar (const nkMemory::StringView &name, bool defaultValue)
 
int getVar (const nkMemory::StringView &name, int defaultValue)
 
float getVar (const nkMemory::StringView &name, float defaultValue)
 
double getVar (const nkMemory::StringView &name, double defaultValue)
 
const nkMemory::StringViewgetVar (const nkMemory::StringView &name, const nkMemory::StringView &defaultValue)
 
ScriptObjectReference getVar (const nkMemory::StringView &name)
 
void * getObject (const nkMemory::StringView &name, const nkMemory::StringView &userTypeName=nullptr)
 
ScriptObjectReference getScriptFunction (const nkMemory::StringView &name)
 
FunctionsetFunc (const nkMemory::StringView &name)
 
bool isFuncSet (const nkMemory::StringView &name)
 
FunctiongetFunc (const nkMemory::StringView &name)
 
UserTypesetUserType (const nkMemory::StringView &name)
 
bool isUserTypeSet (const nkMemory::StringView &name)
 
UserTypegetUserType (const nkMemory::StringView &name)
 
NamespacesetNamespace (const nkMemory::StringView &name)
 
bool isNamespaceSet (const nkMemory::StringView &name)
 
NamespacegetNamespace (const nkMemory::StringView &name)
 
bool callScriptFunction (const ScriptObjectReference &reference, const DataStack &args, DataStack &expectedOutput)
 
nkMemory::Buffer serializeScriptObject (const ScriptObjectReference &reference, bool forwardUserDataOwnership=false)
 
ScriptObjectReference deserializeScriptObject (const nkMemory::BufferView< unsigned char > &object)
 

Detailed Description

Defines an environment in which scripts can execute.

It can be seen as a context in which structures and objects can be defined and accessed.

Constructor & Destructor Documentation

◆ Environment()

nkScripts::Environment::Environment ( )

Constructor.

◆ ~Environment()

nkScripts::Environment::~Environment ( )

Destructor.

Member Function Documentation

◆ getLastExecutionResult()

const ExecutionResult& nkScripts::Environment::getLastExecutionResult ( ) const
Returns
The last execution result.

◆ getName()

nkMemory::StringView nkScripts::Environment::getName ( ) const
Returns
The name attached to the environment.

◆ setEnvironmentFor()

void nkScripts::Environment::setEnvironmentFor ( INTERPRETER  interpretType)

Sets the interpreter the environment should be ready for.

Parameters
interpretTypeThe type of interpreter to use.

◆ setName()

void nkScripts::Environment::setName ( const nkMemory::StringView name)

Sets the name of the environment.

Parameters
nameThe name to set.
Remarks
In theory, this should not be called from external code, but only from the EnvironmentManager.

◆ execute()

bool nkScripts::Environment::execute ( const Script script)

Requests the execution of a script within the environment.

Parameters
scriptThe script to execute.
Returns
Whether the execution went fine (true) or not (false). If an error occurred, result can be checked through getLastExecutionResult().

◆ requestGarbageCollection()

void nkScripts::Environment::requestGarbageCollection ( )

Requests a garbage collection within the environment.

◆ setVar() [1/7]

void nkScripts::Environment::setVar ( const nkMemory::StringView name,
bool  value 
)

Sets a variable within the environment.

Parameters
nameThe name of the variable to set.
valueThe value to assign to it.

◆ setVar() [2/7]

void nkScripts::Environment::setVar ( const nkMemory::StringView name,
int  value 
)

Sets a variable within the environment.

Parameters
nameThe name of the variable to set.
valueThe value to assign to it.

◆ setVar() [3/7]

void nkScripts::Environment::setVar ( const nkMemory::StringView name,
float  value 
)

Sets a variable within the environment.

Parameters
nameThe name of the variable to set.
valueThe value to assign to it.

◆ setVar() [4/7]

void nkScripts::Environment::setVar ( const nkMemory::StringView name,
double  value 
)

Sets a variable within the environment.

Parameters
nameThe name of the variable to set.
valueThe value to assign to it.

◆ setVar() [5/7]

void nkScripts::Environment::setVar ( const nkMemory::StringView name,
const char *  value 
)

Sets a variable within the environment.

Parameters
nameThe name of the variable to set.
valueThe value to assign to it.

◆ setVar() [6/7]

void nkScripts::Environment::setVar ( const nkMemory::StringView name,
const nkMemory::StringView value 
)

Sets a variable within the environment.

Parameters
nameThe name of the variable to set.
valueThe value to assign to it.

◆ setVar() [7/7]

void nkScripts::Environment::setVar ( const nkMemory::StringView name,
const ScriptObjectReference value 
)

Sets a variable within the environment.

Parameters
nameThe name of the variable to set.
valueThe value to assign to it.

◆ setObject()

void nkScripts::Environment::setObject ( const nkMemory::StringView name,
const nkMemory::StringView userTypeName,
void *  value 
)

Sets an object within the environment.

Parameters
nameThe name of the object to set.
userTypeNameThe type name of the user data to set.
valueThe user data to assign to it.

◆ isVarSet()

bool nkScripts::Environment::isVarSet ( const nkMemory::StringView name)

Checks whether a variable is existing in the environment.

Parameters
nameThe name of the variable to check.

◆ getVar() [1/6]

bool nkScripts::Environment::getVar ( const nkMemory::StringView name,
bool  defaultValue 
)

Retrieves a variable, if it exists.

Parameters
nameThe name of the variable to retrieve the value from.
defaultValueThe default value to return if no variable of this name exists, or if the variable is not from requested type.
Returns
The variable value in the environment if it exists and is of requested type.

◆ getVar() [2/6]

int nkScripts::Environment::getVar ( const nkMemory::StringView name,
int  defaultValue 
)

Retrieves a variable, if it exists.

Parameters
nameThe name of the variable to retrieve the value from.
defaultValueThe default value to return if no variable of this name exists, or if the variable is not from requested type.
Returns
The variable value in the environment if it exists and is of requested type.

◆ getVar() [3/6]

float nkScripts::Environment::getVar ( const nkMemory::StringView name,
float  defaultValue 
)

Retrieves a variable, if it exists.

Parameters
nameThe name of the variable to retrieve the value from.
defaultValueThe default value to return if no variable of this name exists, or if the variable is not from requested type.
Returns
The variable value in the environment if it exists and is of requested type.

◆ getVar() [4/6]

double nkScripts::Environment::getVar ( const nkMemory::StringView name,
double  defaultValue 
)

Retrieves a variable, if it exists.

Parameters
nameThe name of the variable to retrieve the value from.
defaultValueThe default value to return if no variable of this name exists, or if the variable is not from requested type.
Returns
The variable value in the environment if it exists and is of requested type.

◆ getVar() [5/6]

const nkMemory::StringView& nkScripts::Environment::getVar ( const nkMemory::StringView name,
const nkMemory::StringView defaultValue 
)

Retrieves a variable, if it exists.

Parameters
nameThe name of the variable to retrieve the value from.
defaultValueThe default value to return if no variable of this name exists, or if the variable is not from requested type.
Returns
The variable value in the environment if it exists and is of requested type.

◆ getVar() [6/6]

ScriptObjectReference nkScripts::Environment::getVar ( const nkMemory::StringView name)

Retrieves a variable, if it exists.

Parameters
nameThe name of the variable to retrieve the value from.
Returns
A reference over the variable in the environment.

◆ getObject()

void* nkScripts::Environment::getObject ( const nkMemory::StringView name,
const nkMemory::StringView userTypeName = nullptr 
)

Retrieves an object if it exists.

Parameters
nameThe name of the variable to retrieve the object from.
userTypeNameIf needed, the type name can be specified to ensure pointer returned is of the right type.
Returns
A pointer over the user data linked, if it exists and is of the type specified.
Remarks
It is possible to leave the type name empty, preventing the retrieval from checking the user data type before returning it.

◆ getScriptFunction()

ScriptObjectReference nkScripts::Environment::getScriptFunction ( const nkMemory::StringView name)

Retrieves a reference over a function defined in the scripting environment.

Parameters
nameThe name of the function to retrieve.
Returns
A reference over the requested function, if it exists.

◆ setFunc()

Function* nkScripts::Environment::setFunc ( const nkMemory::StringView name)

Sets a function within the environment.

Parameters
nameThe name of the function to set.
Returns
The function information holder to populate.
Remarks
The environment owns the Function memory. External code should not delete it.

◆ isFuncSet()

bool nkScripts::Environment::isFuncSet ( const nkMemory::StringView name)

Checks whether a function is existing within the environment.

Parameters
nameThe name of the function to check.
Returns
Whether the function exists (true) or no (false).

◆ getFunc()

Function* nkScripts::Environment::getFunc ( const nkMemory::StringView name)
Parameters
nameThe name of the function to retrieve.
Returns
The function requested if it exists, nullptr else.

◆ setUserType()

UserType* nkScripts::Environment::setUserType ( const nkMemory::StringView name)

Sets a user type within the environment.

Parameters
nameThe name of the user type to set. It is possible to shortcut into namespaces using a syntax like ns0::ns1::UserTypeName.
Returns
The user type information holder to populate.
Remarks
The environment owns the UserType memory. External code should not delete it.

◆ isUserTypeSet()

bool nkScripts::Environment::isUserTypeSet ( const nkMemory::StringView name)

Checks whether a user type is existing within the environment.

Parameters
nameThe name of the user type to check. It is possible to shortcut into namespaces using a syntax like ns0::ns1::UserTypeName.
Returns
Whether the user type exists (true) or not (false).

◆ getUserType()

UserType* nkScripts::Environment::getUserType ( const nkMemory::StringView name)
Parameters
nameThe name of the user type to retrieve. It is possible to shortcut into namespaces using a syntax like ns0::ns1::UserTypeName.
Returns
The user type requested if it exists, nullptr else.

◆ setNamespace()

Namespace* nkScripts::Environment::setNamespace ( const nkMemory::StringView name)

Sets a namespace within the environment.

Parameters
nameThe name of the namespace to set. It is possible to shortcut into namespaces using a syntax like ns0::ns1::ns2.
Remarks
The environment owns the Namespace memory. External code should not delete it.

◆ isNamespaceSet()

bool nkScripts::Environment::isNamespaceSet ( const nkMemory::StringView name)

Checks whether a namespace is existing within the environment.

Parameters
nameThe name of the namespace to check. It is possible to shortcut into namespaces using a syntax like ns0::ns1::ns2.
Returns
Whether the namespace exists (true) or not (false).

◆ getNamespace()

Namespace* nkScripts::Environment::getNamespace ( const nkMemory::StringView name)
Parameters
nameThe name of the namespace to retrieve. It is possible to shortcut into namespaces using a syntax like ns0::ns1::ns2.
Returns
The namespace requested if it exists, nullptr else.

◆ callScriptFunction()

bool nkScripts::Environment::callScriptFunction ( const ScriptObjectReference reference,
const DataStack args,
DataStack expectedOutput 
)

Calls a script function from the C++ environment.

Parameters
referenceThe function reference, in the environment.
argsThe arguments to provide to the function, in a stack.
expectedOutputA ready stack that will receive the output of the called function.
Returns
If the function could successfully be called (true) or not (false).

◆ serializeScriptObject()

nkMemory::Buffer nkScripts::Environment::serializeScriptObject ( const ScriptObjectReference reference,
bool  forwardUserDataOwnership = false 
)

Serializes an object from the environment into a binary buffer. This can be used to pass a script object from one environment to another, for instance.

Parameters
referenceThe reference in the environment of the object to serialize.
forwardUserDataOwnershipWhether the user data, defined by user types, should also forward their ownership to the serialization object (true) or not (false). \ This will ultimately transmit the ownsership to the environment where it is deserialized.
Returns
The binary buffer containing the serialized data.

◆ deserializeScriptObject()

ScriptObjectReference nkScripts::Environment::deserializeScriptObject ( const nkMemory::BufferView< unsigned char > &  object)

Deserializes a binary buffer into a new object within the environment.

Parameters
objectThe serialized binary buffer to deserialize.
Returns
A reference over the object created within the environment, using the serialized information.

The documentation for this class was generated from the following file: